home *** CD-ROM | disk | FTP | other *** search
/ Power Programmierung / Power-Programmierung (Tewi)(1994).iso / magazine / msysjour / vol04 / 01a / genapp2 / applcatn.h < prev    next >
C/C++ Source or Header  |  1988-10-24  |  5KB  |  176 lines

  1. /*****************************************************************
  2.     APPLICATION.H
  3. *****************************************************************/
  4.  
  5.  
  6. /*values for viewtype*/
  7. #define GRAPHICS_VIEW    1
  8. #define TEXT_VIEW        2
  9.  
  10.  
  11. #define DEPTH_RECT(r)    ((r)->bottom - (r)->top)
  12.  
  13. typedef int PIXEL;
  14.  
  15. /****************************************************************/
  16.  
  17. #ifdef MAC
  18. typedef Rect *        pRect;
  19. typedef char *        MEMPTR;
  20. typedef MEMPTR *    MEMBLOCK;
  21.  
  22. #else
  23. #ifndef _STDDEFS_
  24. #ifndef WM_CREATE
  25. typedef short        HANDLE;
  26. #endif
  27. #endif
  28.  
  29. typedef Rect far *    pRect;
  30. typedef char far *    MEMPTR;
  31. typedef HANDLE         MEMBLOCK;
  32. #endif
  33. typedef long        MEMSIZE;
  34. typedef int         HCANVAS;
  35.  
  36.  
  37. /****************************************************************/
  38.  
  39. PUBLIC VOID    app_MainProcedure    (VOID);
  40. LOCALF BOOL    app_InitApplication    (VOID);
  41. LOCALF BOOL    app_EventLoop        (VOID);
  42.  
  43. /****************************************************************
  44.     OBJECT MANAGER
  45. ****************************************************************/
  46.  
  47.     /*values for objtype*/
  48. enum {    RECT_OBJ, OVAL_OBJ };
  49.  
  50.     /*values for objattr*/
  51. enum {    FRAME_ATTR, FILL_ATTR, FILLANDFRAME_ATTR };
  52.  
  53. #define INVALID_OBJID    ((OBJID)  -1)
  54.  
  55. typedef struct
  56. {
  57.     Rect    rect;
  58.     int    objtype;
  59.     int    objattr;
  60. } OBJ;
  61.  
  62. #ifdef MAC
  63. typedef OBJ *        POBJ;
  64. #else
  65. typedef OBJ far *    POBJ;
  66. #endif
  67.  
  68. typedef int OBJID;
  69.  
  70. PUBLIC VOID    obj_HighlightObjAsGraphics    (HCANVAS,POBJ);
  71. PUBLIC VOID    obj_ShowObjAsGraphics        (HCANVAS,POBJ);
  72. PUBLIC VOID    obj_MakeObject                (POBJ,Rect *,ENUM,ENUM);
  73. PUBLIC VOID    obj_ShowObjAsText            (HCANVAS,PIXEL,PIXEL,POBJ);
  74.  
  75. /****************************************************************
  76.     MODEL MANAGER
  77. *****************************************************************/
  78.  
  79. typedef struct
  80. {
  81.     int        num_objects;
  82.     OBJ        objects[1]; /*variable length*/
  83. } MODEL;
  84.  
  85. typedef MEMBLOCK    HMODEL;    /*handle to model is handle to memory block*/
  86.  
  87. #ifdef MAC
  88. typedef MODEL *        PMODEL; /*ptr to model is ptr to mem block */
  89. #else
  90. typedef MODEL far *    PMODEL; /*ptr to model is ptr to mem block */
  91. #endif
  92.  
  93. #define INVALID_MODEL    ((HMODEL) 0)
  94.  
  95. PUBLIC HMODEL    mod_NewModel                (VOID);
  96. PUBLIC VOID        mod_HighlightObjAsGraphics    (HCANVAS,HMODEL,OBJID);
  97. PUBLIC VOID        mod_ShowObjAsGraphics        (HCANVAS,HMODEL,OBJID);
  98. PUBLIC VOID        mod_ShowModelAsGraphics        (HCANVAS,HMODEL);
  99. PUBLIC OBJID    mod_DetectHitInGraphicsMode    (HMODEL,Point *);
  100.  
  101. PUBLIC OBJID    mod_AddObjectToModel(HMODEL *,Rect *, ENUM,ENUM);
  102. PUBLIC VOID        mod_ShowModelAsText(HCANVAS,HMODEL,Rect *,PIXEL,PIXEL);
  103. PUBLIC VOID        mod_ShowObjAsText(HCANVAS,HMODEL,OBJID,Rect *,PIXEL,PIXEL);
  104. PUBLIC OBJID    mod_DetectHitInTextModel(HMODEL,Point *,Rect *,PIXEL,PIXEL);
  105.  
  106. /****************************************************************
  107.     DOCUMENT MANAGER
  108. *****************************************************************/
  109.  
  110. #define MAX_DOCUMENTS     4
  111. #define MAX_VIEWS     8
  112. #define VIEWS_PER_DOC    4
  113.  
  114. typedef struct
  115. {
  116.     BOOL        in_use;
  117.     BOOL        is_modified;
  118.     INDEX        views[VIEWS_PER_DOC];
  119.     HMODEL        model;
  120.  
  121.     /*FILENAME    filename;--for the future*/
  122. } DOC;
  123.     
  124.  
  125. PUBLIC BOOL        doc_InitDocuments            (VOID);
  126. LOCALF INDEX    allocate_document            (VOID);
  127. PUBLIC INDEX    doc_NewDocument                (VOID);
  128. PUBLIC BOOL        doc_AddViewToDoc            (INDEX,INDEX);
  129. PUBLIC OBJID    doc_AddObjectToDocument        (INDEX,Rect *,ENUM,ENUM);
  130. PUBLIC VOID        doc_ShowObjAsGraphics        (HCANVAS,INDEX,OBJID);
  131. PUBLIC VOID        doc_HighlightObjAsGraphics    (HCANVAS,INDEX,OBJID);
  132. PUBLIC VOID        doc_ShowModelAsGraphics        (HCANVAS,INDEX);
  133. PUBLIC VOID        doc_ShowModelAsText            (HCANVAS,INDEX,Rect *);
  134. PUBLIC OBJID    doc_DetectHitInGraphicsMode    (INDEX,Point *);
  135.  
  136. /****************************************************************
  137.     VIEW MANAGER
  138. *****************************************************************/
  139.  
  140. PUBLIC BOOL        vu_InitViews                (VOID);
  141. PUBLIC INDEX    vu_WhichView                (HCANVAS);
  142. PUBLIC INDEX    vu_WhichDocument            (INDEX);
  143. PUBLIC INDEX    vu_TheCurrentView            (VOID);
  144. LOCALF INDEX    allocate_view                (VOID);
  145. PUBLIC VOID        vu_SetCurrentView            (VOID);
  146. PUBLIC INDEX    vu_NewView            (STRING,Rect *,INDEX,ENUM);
  147. PUBLIC VOID        vu_SetSelectionMode            (VOID);
  148. PUBLIC VOID        vu_SetCreateRectMode        (VOID);
  149. PUBLIC VOID        vu_SetCreateOvalMode        (VOID);
  150. LOCALF VOID        vu_DetectHitInGraphicsMode    (INDEX,Point *);
  151. LOCALF VOID        vu_MakeObjInGraphicsMode    (INDEX,Point *);
  152. LOCALF VOID        vu_MakeObjInTextMode        (INDEX,Point *);
  153. PUBLIC VOID        vu_MouseDown                (INDEX,Point *);
  154. PUBLIC VOID        vu_ActivateView                (INDEX);
  155. PUBLIC VOID        vu_InvalidateView            (INDEX);
  156. PUBLIC VOID        vu_CloseView                (INDEX);
  157. PUBLIC VOID        vu_OpenView                    (INDEX);
  158. PUBLIC VOID        vu_ResizeView                (INDEX,Point *);
  159. PUBLIC VOID        vu_MoveView                    (INDEX,Point *);
  160. PUBLIC VOID        vu_UpdateView                (INDEX);
  161. #ifdef MAC
  162. PUBLIC BOOL        vu_IsAppView                (LONG);
  163. #endif
  164.  
  165. /****************************************************************
  166.     COMMAND DISPATCHER
  167. *****************************************************************/
  168.  
  169. LOCALF BOOL        app_InitCommandDispatcher    (VOID);
  170. LOCALF VOID        app_DispatchCommand            (int,int);
  171.  
  172. /****************************************************************/
  173.  
  174.  
  175.  
  176.